set_project ("XEGE-SDL")     -- 设置工程名称
set_version ("20.0.0", { build = "%Y%m%d%H%M" })
                                -- 设置当前版本
set_xmakever ("2.3.7")          -- 设置最低 xmake 版本需求
-- add_subdirs ("")
-- 子模块
add_rules ("mode.debug", "mode.release")


if is_mode ("debug") then
	set_symbols ("debug")
	set_optimize ("none")
	-- set_warnings ("all", "error")
	set_warnings ("all")
	add_options ("-g")
	-- set_pcxxheader ("NanoLog.h")
end

if is_mode ("release") then
	set_symbols ("hidden")
	set_optimize ("fastest")
	set_strip ("all")
	set_warnings ("none")
end

target ("xege-sdl")
	-- add_deps()
	-- add_requires ("libsdl", "libsdl_gfx", "libsdl_image", "libsdl_mixer", "libsdl_ttf", "libsdl_net")
	-- if is_kind ("")
	if is_os ("windows") then
		add_defines ("_OS_IS_WINDOWS")
	end

	-- C++ 标准
	add_cxflags ("-std=c++2a")
	-- 项目头文件路径
	add_includedirs ("C:/TDM-GCC-64/x86_64-w64-mingw32/include")
	add_includedirs ("$(projectdir)/include", "$(projectdir)/src")
	-- 项目库文件路径
	add_linkdirs ("$(projectdir)/lib")


	-- SDL2_gfx
	add_files ("lib/gfx/SDL2_framerate.c", "lib/gfx/SDL2_gfxPrimitives.c", "lib/gfx/SDL2_imageFilter.c", "lib/gfx/SDL2_rotozoom.c")
	-- XEGE-SDL source files
	add_files ("src/image.cpp", "src/window.cpp", "src/paint.cpp", "src/image_base.cpp", "src/font.cpp")
	-- format library
	add_files ("lib/fmt/format.cc", "lib/fmt/os.cc")
	if is_plat ("mingw") then
		add_links ("mingw32")
		if is_mode ("debug") then
			add_shflags ("-static", { force = true })
		end
	end
	if is_os ("windows") then
		add_links("SDL2main")
	end
	-- 当前的项目链接库，未来会内置到项目之中
	add_links ("SDL2", "SDL2_image", "SDL2_mixer", "SDL2_ttf")
	if is_os ("windows") then
		add_options ("-mwindows")
	end

if true then
	-- set_optimize("fastest")
	set_optimize("none")
	set_warnings("everything")
end

-- 构建 sol 所运行的 lua
target ("lua")
    set_kind ("static")
	if is_plat("windows") then
		set_languages("c11")
	else -- 本应该设置 c99 才对，但是 MSVC 不支持 c99
		set_languages("c99")
	end
	add_includedirs("./lib/lua", { public = true })
    add_files("./lib/lua/*.c|lua.c|luac.c|onelua.c")

target ("tinyexpr")
	set_kind ("static")
	set_languages("cxx11")
	add_files("./lib/tinyexpr/tinyexpr.c")

-- 很遗憾的是，现在fmt直接滚去支持 moudle 了，
-- 但是我现在用的编译器又不支持 module，干，暂时抛弃 fmt 吧！
-- 等以后 moudule 功能被编译器普遍支持后再来用！
target ("fmt")
	set_kind ("static")
	set_languages("cxxlatest")
	add_includedirs("./lib/fmt/include", { public = true })
	add_files("./lib/fmt/src/*.cc|fmt.cc")

target ("getopt")
	set_kind ("static")
	set_languages("cxx11")
	add_includedirs("./lib/getopt", { public = true })
	add_files("./lib/getopt/getopt.cpp")




-- 下面都是些测试程序


target("majortest")
	set_kind("binary")
	-- binary static shared
	add_files ("test/main.cpp")


target("demo-clock")
	set_kind("binary")
	-- binary static shared
	add_files ("test/demo/clock.cpp")

target("sol-test")
    set_kind("binary")
	set_languages("cxxlatest")
	add_includedirs("./lib/sol/include")
	add_includedirs("./lib/json/single_include")

    add_deps ("lua", "getopt", "fmt")

    add_files("./test/sol-test/test.cc")

